const install = (Vue,vm)=>{		
	const isLogin = ()=>{		
		const token = uni.getStorageSync('access_token');
		console.log(token);
		if(!token){
			//没有token，直接跳转至登录页面，跳转时，一定要关闭原来的页面，如果可以返回的话，会形成循环			
			//还需要获取当前页面是否有参数，如果有，需要把参数附加在地址后面
			const currentPage = getCurrentPages().pop();	 //获取当前页面信息		
			const {options,route} = currentPage; //解构对象内容
			const optionsKeys = Object.keys(options); //将options中的key获取，以数组的形式返回
			let params = '';
			if(optionsKeys.length != 0){
				//说明当前页面有参数，则需要用?属性=值的方式将相关内容拼接到route中去
				params = optionsKeys.reduce((pre,current)=>{
					if(current.length > 0){ //这里之所以要这样判断一下，是因为浏览器会自动在我们跳转的地址后面加一个&=，这样Object.keys就会得到一个空的key
						return pre + current + '=' + options[current] + '&';
					}
					else{
						//如果当前有key，就返回拼接后的内容，如果是空key，就返回上一次拼接好的内容
						return pre;
					}
				},"?").slice(0,-1);
				//首先将?和第1项拼接，然后加一个=，再加上他的值，再连接一个&。这样做下来，最后会多一个&，所以还要减去。
				//slice可以从己有数组中返回指定的元素，原数组不变化。
				//第1个参数是从何处开始选取。0表示从第1个元素开始取。如果为负数，则表示倒着数。比如，slice(-2)，表示到最后2个元素。
				//第2个参数表示从何处结束选取，-1表示取到倒数第1个结束，就是不包含最后一个元素。
			}
			/* 
			 arr.reduce(function(prev,cur,index,arr){
			 ...
			 }, init);
			 其中，
			 arr 表示原数组；
			 prev 表示上一次调用回调时的返回值，或者初始值 init;
			 cur 表示当前正在处理的数组元素；
			 index 表示当前正在处理的数组元素的索引，若提供 init 值，则索引为0，否则索引为1；
			 init 表示初始值。
			 一般我们都是用第一个参数和第二个参数。
			 如果有参数init，则第一次运行时，pre就等于init，index就从0开始，当然，cur就是数组的第1项。
			 如果没有参数init，则第一次运行时，pre就等于数组的第1个元素，index就从1开始，cur就是数组的第2项。
			 */
			uni.setStorageSync('backUrl',route + params);//缓存来源页面（包含参数）
			uni.$u.toast('请登录后访问本页面。');
			setTimeout(()=>{
				uni.$u.route({
					type:'redirect',  
					url:'pages/auth/login'
				})
			},1500)	
			return false;
		}
		return true;
	}
	vm.$u.utils = {
		isLogin
	}
}
export default{
	install
}